package com.flash.dataU.test.service.impl;

import com.flash.dataU.test.dao.BaseDao;
import com.flash.dataU.test.entity.BaseEntity;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;

/**
 * .
 *
 * @author sunym1993
 * @version 0.0.1-SNAPSHOT
 * @since 2017年12月06日 17时28分
 */
public abstract class BaseService<D extends BaseDao<T>, T extends BaseEntity<T>> {

    /**
     * 持久层对象
     */
    @Autowired
    protected D dao;

    /**
     * 获取单条数据
     *
     * @param id
     * @return
     */
    public T get(int id) {
        return dao.get(id);
    }

    /**
     * 查询列表数据
     *
     * @param entity
     * @return
     */
    public List<T> findAllList() {
        return dao.findAllList();
    }

    /**
     * 查询列表数据
     *
     * @param entity
     * @return
     */
    public List<T> findList(T entity) {
        return dao.findList(entity);
    }

    /**
     * 保存数据（插入或更新）<br/>
     * 注意：此处基于传入的entity中是否包含主键来判断是为插入还是更新.
     *
     * @param entity
     */
    public void save(T entity) {
        dao.insert(entity);
    }

    /**
     * 删除数据
     *
     * @param entity
     */
    public void delete(T entity) {
        dao.delete(entity);
    }

    /**
     * 批量查询数据返回结果数
     *
     * @param entity
     * @return
     */
    public int count(T entity) {
        return dao.count(entity);
    }

}